#include "bsp.h"

IWDG_HandleTypeDef HandleIWDG;

/**
 * 由内部专门的 32Khz 低速时钟（LSI）驱动
 * 在 15~47Khz 之间的一个可变化的时钟，估算以 32Khz 的频率
 * Tout=((4×2^prer) × value) /32
 * Tout 为看门狗溢出时间（单位为 ms）； prer 为看门狗时钟预分频值（IWDG_PR 值，范围为 0~7；
 * value 为看门狗的重装载值（IWDG_RLR）的值
 * 4 * 2^3 * value / 32 = value (ms)
 * */
void IWDG_Init(uint32_t value)
{
    HandleIWDG.Instance       = IWDG;
    HandleIWDG.Init.Prescaler = IWDG_PRESCALER_32;  //设置 IWDG 分频系数 3 
    HandleIWDG.Init.Reload    = value;
    if (HAL_IWDG_Init(&HandleIWDG) != HAL_OK)
    {
        _Error_Handler(__FILE__, __LINE__);
    }
}

void IWDG_Feed(void)
{
    HAL_IWDG_Refresh(&HandleIWDG); //重装载
}
